<template>
  <div>
    <!-- 面包屑 -->
    <el-breadcrumb separator="/">
      <el-breadcrumb-item :to="{ path: '/' }">首页</el-breadcrumb-item>
      <el-breadcrumb-item>菜单管理</el-breadcrumb-item>
    </el-breadcrumb>
    <!-- 添加按钮 -->
    <el-button @click="add" class="addBtn" type="primary" size="small" plain
      >添加</el-button
    >
    <!-- 列表展示 -->
    <v-list @edit="edit" ref="list"></v-list>
    <!-- 弹框展示 -->
    <!-- <v-dialog @cancel='cancel' :isShow='isShow'></v-dialog> -->
    <v-dialog
      ref="info"
      @cancel="cancel"
      @update="update"
      :info="info"
    ></v-dialog>
  </div>
</template>

<script>
import vList from "./list.vue";
import vDialog from "./dialog";
export default {
  data() {
    return {
      // isShow:false
      info: {
        isShow: false, //是否显示
        isAdd: true, //是否是添加
      },
    };
  },
  components: {
    vList,
    vDialog,
  },
  methods: {
    //打开弹框事件
    add() {
      this.info.isShow = true;
      //告诉弹框你是添加
      this.info.isAdd = true;
      // 给弹窗赋值
      // this.$refs.info获取子组件，setVal是子组件的函数。
      // 新增时要传初始化的参数
      this.$refs.info.setVal({
        pid: 0,
        title: "",
        icon: "",
        type: 1,
        url: "",
        status: 1,
      });
    },
    //封装一个编辑打开弹框事件
    edit(row) {
      //编辑打开弹框
      this.info.isShow = true;
      //告诉弹框你是编辑
      this.info.isAdd = false;
      // 给弹窗赋值
      // this.$refs.info获取子组件，setVal是子组件的函数
      this.$refs.info.setVal(row);
    },
    //封装一个取消事件(子组件改变父组件的isShow数据)
    cancel(e) {
      this.info.isShow = e;
    },
    // 子组件需要更新数据
    update() {
      // 在父组件中调用子组件的方法
      this.$refs.list.getList();
    },
  },
};
</script>

<style scoped>
.addBtn {
  margin: 10px;
}
</style>
